package com.ttbj.company.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ttbj.api.dto.Page;
import com.ttbj.company.bean.po.Company;



public interface CompanyMapper {
	
	/**
	 * 通过编号查询公司的编号和名称
	 * @param companyNum 公司编号
	 * @return
	 */
	List<Company> queryCompanyNumAndName(@Param("companyNum") String companyNum, @Param("isDel") Integer isDelete);
	
	/**
	 * 查询没有禁用的公司的比编号和名称
	 * @param isDel 是否删除，0未删除  1已删除
	 * @return
	 */
	List<Company> queryCompanyNumAndNameUsedSelect(Integer isDel);
	
	/**
	 * 通过条件或者无条件查询所有的公司
	 * @param page 页码
	 * @param company 公司信息
	 * @param isDelete
	 * @return 公司list
	 */
	List<Company> queryCompaynPage(@Param("page") Page page, @Param("cp") Company company);
	
	/**
	 * 通过条件或者无条件查询所有的公司数量
	 * @param company
	 * @param isDelete
	 * @return 数量
	 */
	Integer queryCompaynPageCount(@Param("cp") Company company);
	
	/**
	 * 增加公司信息
	 * @param company 公司
	 */
	int insertCompanInfo(Company company);
	
	/**
	 * 通过ID查询公司信息
	 * @param companyId 公司ID
	 * @return
	 */
	Company queryCompanyById(Long companyId);
	
	/**
	 * 修改公司的基本信息
	 * @param company
	 */
	void updateCompanyInfo(Company company);
	
	/**
	 * 如果业务员表中有本公司的业务员，则使用停运公司.进行连表更新
	 * @param isDelete
	 * @param comnumId
	 */
	void updateJoinCompanyDisable(@Param("isdel") Integer isDelete, @Param("cId") Long comnumId);
	
	/**
	 * 如果业务员表中没有本公司的业务员，则使用停运公司.不进行连表更新
	 * @param isDelete
	 * @param comnumId
	 */
	void updateCompanyDisable(@Param("isdel") Integer isDelete, @Param("cId") Long comnumId);
	
	/**
	 * 通过公司id查询出公司部分信息
	 * @param companyId 公司id
	 * @return
	 */
	Company queryCompanyInfoById(@Param("companyId") Long companyId);
	
	/**
	 * 通过总公司的id，查询所有分公司的信息列表
	 * @param page 页码
	 * @param companyId 总公司id
	 * @return
	 */
	List<Company> queryBranchCompayInfo(@Param("page") Page page, @Param("companyId") Long companyId);
	
	/**
	 * 通过总公司的id，查询所有分公司的信息列表数量
	 * @param companyId
	 * @return
	 */
	Integer queryBranchCompayInfoCount(@Param("companyId") Long companyId);
	
	/**
	 * 通过公司id查询分公司的id列表
	 * @param companyId 公司id
	 * @return
	 */
	List<Long> queryBranchCompanyIdList(@Param("companyId") Long companyId);
	
	/**
	 * 通过分公司的id集合，批量更新分公司信息
	 * @param comnumIds 分公司id的list
	 */
	void updateBranchCompanyInfo(@Param("c") Company company, @Param("comnumIds") List<Long> comnumIds);
	
	/**
	 * 通过分公司ids，更新分公司的状态
	 * @param isDelete 是否禁用
	 * @param comnumIds 分公司id的list
	 */
	void updateBranchCompanyDisable(@Param("isdel") Integer isDelete, @Param("comnumIds") List<Long> comnumIds);
	
	/**
	 * 通过总公司的编号查询分公司的id
	 * @param comnumNum 总公司编号
	 * @return
	 */
	Long queryCompanyIdByNum(@Param("comnumNum") String comnumNum);
	
	/**
	 * 通过总公司编号查询所有分公司编号列表
	 * @param comnumNum 总公司编号
	 * @return
	 */
	List<String> queryBranchCompanyNum(@Param("comnumNum") String comnumNum);
	
	/**
	 * 通过总公司编号查询分公司的id和名字列表
	 * @param comnumNum 总公司编号
	 * @return
	 */
	List<Company> queryBranchCompanyIdAndName(@Param("comnumNum") String comnumNum);
	
	/**
	 * 通过公司ID只查询公司账户信息 
	 * @param companyId 公司ID
	 * @return
	 */
	Company queryCompanyOpenAccById(@Param("comnumId") Long companyId);
	
	/**
	 * 增加账户开户以及账户信息
	 * @param company 账户开户需要用到的信息
	 * @return
	 */
	int insertCompanyOpenAcc(Company company);
	
	/**
	 * 通过公司编号更新公司提现密码
	 * @param comnumWdPassword 提现密码
	 * @param comnumNum 公司编号
	 * @return
	 */
	int updateWdPasswordByNum(@Param("comnumWdPassword") String comnumWdPassword, @Param("comnumNum") String comnumNum);
	
	/**
	 * 通过公司编号查询公司提现密码
	 * @param comnumNum 公司编号
	 * @return
	 */
	String queryWdPasswordByNum(String comnumNum);
	
	/**
	 * 通过公司编号查询公司的账户号
	 * @param comnumNum 公司编号
	 * @return
	 */
	String queryComnumAccountNoByNum(String comnumNum);
	
	/**
	 * 通过公司编号查询提现银行卡号和开户行
	 * @param comnumNum 公司编号
	 * @return
	 */
	Company queryBankCardAndNameByNum(String comnumNum);
}
